package actas.fcf.cat;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.SQLException;

import com.opencsv.CSVWriter;

import fcf.cat.Config;
import fcf.cat.DBase;
import fcf.cat.Exportar;
import fcf.cat.Importar;
import fcf.cat.Querys;
import fcf.cat.Utils;

public class Actas {

	public static String newLine = "\n";
	public static String splitBy = ";";

	public static void init() throws SQLException, IOException{
		checkVista(); //comprobamos si existe la vista.
		//Exportar.MysqlToCsv(Config.BD_FFCATALUNYA+"."+Config.VISTA_ACTAS,Config.ACTAS_CSV,splitBy,newLine); //Exportamos datos de la vista a csv
		//tratarCSV(); // Modificamos el csv 
		//Importar.CsvToMysql(Config.BD_RELACIONES,Config.TABLA_ACTAS,"rel_actas.csv",splitBy,newLine); //importamos el csv a la tabla relaciones.equipos
	}
	
	
	
	public static void checkVista() throws SQLException {
		
		Utils.linea("INICIANDO COMPROBACION VISTA COMPETICIONES");
		
		if(!DBase.existeTabla(Config.BD_FFCATALUNYA,Config.VISTA_ACTAS)){ //comprueba que la vista de competiciones_url exista.Si no la creamos
			
			boolean res = DBase.query(Config.BD_FFCATALUNYA,Querys.vistaActas()); //ejecutamos query de la vista
			
			if(res){
				Utils.linea("VISTA =>"+Config.BD_FFCATALUNYA+" CREADA CORRECTAMENTE");
			}else{
				Utils.linea("NO SE HA CREADO LA VISTA");
			}
		}
	}
	
	/**
	* Modifica el csv con los datos de cada registro que ira a relaciones.competiciones
	*/
	public static void tratarCSV() {
		 
		String csvFile = Config.CSV_FOLDER+Config.ACTAS_CSV;

		BufferedReader br = null;
		
		String line = newLine;
		String cvsSplitBy = splitBy;
		 
		try {
		 
			br = new BufferedReader(new FileReader(csvFile));
			String data = "";
			
			int i = 1;
			
			Utils.linea("Modificando CSV actas....");

			while ((line = br.readLine()) != null) {
				String cod_equipo_v = "";
				String equipo_visitante_url = "";
				String cod_equipo_l = "";
				String equipo_local_url = "";
				String cod_grupo = "";
				String grupo_url = "";
				String cod_competicion = "";
				String competicion_url = "";
				
				String[] aux = line.split(cvsSplitBy);
				String codacta = aux[0].replace("\"","");
				/** TEMPORADa **/
				String[] cod_temporada = aux[1].replace("\"","").split("@");
				String cod_tmp = cod_temporada[0];
				String[] temporada_url = cod_temporada[1].split("-");
				String temp1 = temporada_url[0].substring(temporada_url[0].length() - 2);
				String temp2 = temporada_url[1].substring(temporada_url[1].length() - 2);
				String tmp_url = temp1+temp2;
				/** tipo **/
				String tipo = Utils.validarString(aux[2].replace("\"",""));
				/** competicion FALTA COMPROBAR **/
				String[] competicion = aux[3].replace("\"","").split("@");
				
				if(competicion.length >= 2){
					 cod_competicion = competicion[0];
					 competicion_url = Utils.validarString(competicion[1]);

				}else{
					 cod_competicion = "NULL";
					 competicion_url = "NULL";
				}
				
				
				
				
				/** grupo **/
				String[] grupo = aux[4].replace("\"","").split("@");
				
				if(grupo.length >= 2){
					 cod_grupo = grupo[0];
					 grupo_url = Utils.validarString(grupo[1].replace("\"",""));

				}else{
					 cod_grupo = "NULL";
					 grupo_url = "NULL";
				}
				
				
				
				/** Equipo Local**/
				String[] equipo_l = aux[5].replace("\"","").split("@");
				
				
				cod_equipo_l = equipo_l[0];
				
				if(equipo_l.length >= 2){
					equipo_local_url = Utils.validarString(equipo_l[1]);
					
					if(equipo_local_url.charAt(equipo_local_url.length() - 1) == '-'){
						equipo_local_url = equipo_local_url.substring(0,equipo_local_url.length()-1);
					}
				}else{
					cod_equipo_l = "NULL";
					equipo_local_url = "NULL";
				}
				
				
				
				
				/** Equipo Visitante**/
				String[] equipo_v = aux[6].replace("\"","").split("@");
				cod_equipo_v = equipo_v[0];
					
				if(equipo_v.length >= 2){
					equipo_visitante_url = Utils.validarString(equipo_v[1]);
					if(equipo_visitante_url.charAt(equipo_visitante_url.length() - 1) == '-'){
						equipo_visitante_url = equipo_visitante_url.substring(0,equipo_visitante_url.length()-1);
					}
				}else{
					cod_equipo_v = "NULL";
					equipo_visitante_url = "NULL";
				}
					
					
				
				data+=codacta+splitBy+cod_tmp+splitBy
					+tmp_url+splitBy+tipo+splitBy
					+cod_competicion+splitBy+competicion_url+splitBy
					+cod_grupo+splitBy+grupo_url+splitBy
					+cod_equipo_l+splitBy+equipo_local_url+splitBy
					+cod_equipo_v+splitBy+equipo_visitante_url+newLine;
				System.out.println("Acta =>"+codacta+" modificada");
				i++;
			 }
			
			crearCSV(data); //creamos csv competiciones que importaremos a la base de datos
			Utils.linea("Relaciones.actas: "+i+" de registros creados "+Config.CSV_FOLDER+Config.ACTAS_CSV);
					 
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	
	public static void crearCSV(String data){
		 
		CSVWriter writer = null;
				
	    try {
			writer = new CSVWriter(new FileWriter(Config.CSV_FOLDER+Config.ACTAS_REL_CSV), '\n', CSVWriter.NO_QUOTE_CHARACTER);
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		String[] entries = data.split("\n");
		writer.writeNext(entries);
		
		try {
			writer.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
}
